package GUI;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTabbedPane;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.awt.Cursor;
import java.io.File;
import java.io.IOException;

import javax.swing.BoxLayout;

import BaseDatos.BD;


public class InterfazPrimera extends JFrame implements ActionListener{

	private JPanel contentPane;
	private File file = new File("./fondo.jpg");
	private String usuario;
	private BD baseDatos = new BD();
	
	/*public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					InterfazPrimera frame = new InterfazPrimera();
					frame.setLocationRelativeTo(null);
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}*/

	/**
	 * Create the frame.
	 * @throws IOException 
	 */
	@SuppressWarnings("deprecation")
	public InterfazPrimera(String usuario,int permisos) throws IOException {
		
		this.usuario = usuario;
		BufferedImage tmpImagen=ImageIO.read(file); 
		bgBorder fondo = new bgBorder(tmpImagen);
		
		String titulo="S.G.E.Restaurante" + "                                        													Usuario: " + usuario;
		setTitle(titulo);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 790, 500);
				 
//		Toolkit tk = Toolkit.getDefaultToolkit();
//	    Dimension tamano = tk.getScreenSize();
//      setSize(tamano);
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		
		JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		tabbedPane.setBounds(5, 11, 759, 374);
		JPanel panelAdministracion = new JPanel();
		///////Foto del Panel///////	
		panelAdministracion.setBorder(fondo);
		
		tabbedPane.addTab("Administracion del Sistema", null, panelAdministracion, null);
		panelAdministracion.setLayout(null);
		
		JButton btnGestionFinanza = new JButton("Gesti\u00F3n Financiera");
		btnGestionFinanza.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
			
				FrameFinanzas frameFinanzas = null;
				try {
					frameFinanzas = new FrameFinanzas();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				frameFinanzas.setVisible(true);
				frameFinanzas.setLocationRelativeTo(null);
			
			}
		});
		btnGestionFinanza.setBounds(37, 25, 277, 43);
		panelAdministracion.add(btnGestionFinanza);
		
		JButton btnGestionEmpleados = new JButton("Gesti\u00F3n de Empleados");
		btnGestionEmpleados.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			
				FrameEmpleados frameEmpleados = null;
				try {
					frameEmpleados = new FrameEmpleados();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				frameEmpleados.setVisible(true);
				frameEmpleados.setLocationRelativeTo(null);
			
			}
		});
		btnGestionEmpleados.setBounds(37, 79, 277, 43);
		panelAdministracion.add(btnGestionEmpleados);
		
		JButton btnGestionProveedores = new JButton("Gesti\u00F3n de Proveedores");
		btnGestionProveedores.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			
				FrameProveedores frameProvee = null;
				try {
					frameProvee = new FrameProveedores();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				frameProvee.setVisible(true);
				frameProvee.setLocationRelativeTo(null);
			}
		});
		btnGestionProveedores.setBounds(37, 133, 277, 43);
		panelAdministracion.add(btnGestionProveedores);
		
		JButton btnGestionEstrucMesas = new JButton("Estructuraci\u00F3n de Mesas");
		btnGestionEstrucMesas.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				FrameMesas frameMesas = null;
				try {
					frameMesas = new FrameMesas();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				frameMesas.setVisible(true);
				frameMesas.setLocationRelativeTo(null);
			
			
			}
		});
		btnGestionEstrucMesas.setBounds(37, 187, 277, 43);
		panelAdministracion.add(btnGestionEstrucMesas);
		
		JPanel panelAlmacen = new JPanel();
		///////Foto del Panel///////	
		panelAlmacen.setBorder(fondo);
		
		tabbedPane.addTab("Almac\u00E9n", null, panelAlmacen, null);
		panelAlmacen.setLayout(null);
		
		JButton btnGestinProductos = new JButton("Gesti\u00F3n Productos");
		btnGestinProductos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				FrameProductos frameProductos = null;
				try {
					frameProductos = new FrameProductos();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				frameProductos.setVisible(true);
				frameProductos.setLocationRelativeTo(null);
				
			}
		});
		btnGestinProductos.setBounds(47, 24, 277, 43);
		panelAlmacen.add(btnGestinProductos);
		
		JButton btnGestinDePedidos = new JButton("Gesti\u00F3n de Pedidos");
		btnGestinDePedidos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				FramePedidos framePedidos = null;
				try {
					framePedidos = new FramePedidos();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				framePedidos.setVisible(true);
				framePedidos.setLocationRelativeTo(null);
			}
		});
		btnGestinDePedidos.setBounds(47, 78, 277, 43);
		panelAlmacen.add(btnGestinDePedidos);
		
		JPanel panelEstadoRest = new JPanel();
		///////Foto del Panel///////	
		panelEstadoRest.setBorder(fondo);
		
		tabbedPane.addTab("Estado del Restaurante", null, panelEstadoRest, null);
		panelEstadoRest.setLayout(null);
		
		JButton btnConsultaCamarerosLogueados = new JButton("Consulta Camareros Logueados");
		btnConsultaCamarerosLogueados.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			
				FrameEstadoLogueados frameEstadoLogueado = null;
				try {
					frameEstadoLogueado = new FrameEstadoLogueados();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				frameEstadoLogueado.setVisible(true);
				frameEstadoLogueado.setLocationRelativeTo(null);
			
			}
		});
		btnConsultaCamarerosLogueados.setBounds(69, 33, 277, 43);
		panelEstadoRest.add(btnConsultaCamarerosLogueados);
		
		JButton btnConsultaDeVentas = new JButton("Consulta de Ventas por Camarero");
		btnConsultaDeVentas.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			
				FrameVentasCamarero frameVentasCamarero = null;
				try {
					frameVentasCamarero = new FrameVentasCamarero();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				frameVentasCamarero.setVisible(true);
				frameVentasCamarero.setLocationRelativeTo(null);
			
			}
		});
		btnConsultaDeVentas.setBounds(69, 87, 277, 43);
		panelEstadoRest.add(btnConsultaDeVentas);
		
		JButton btnArqueoDeCaja = new JButton("Arqueo de Caja");
		btnArqueoDeCaja.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			
				FrameArqueoCaja frameArqueo = null;
				try {
					frameArqueo = new FrameArqueoCaja();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				frameArqueo.setVisible(true);
				frameArqueo.setLocationRelativeTo(null);
			
			}
		});
		btnArqueoDeCaja.setBounds(69, 141, 277, 43);
		panelEstadoRest.add(btnArqueoDeCaja);
		
		JPanel panelCocina = new JPanel();
		///////Foto del Panel///////	
		panelCocina.setBorder(fondo);
		
		tabbedPane.addTab("Cocina", null, panelCocina, null);
		panelCocina.setLayout(null);
		
		JButton btnGestinDePlatos = new JButton("Gesti\u00F3n de Platos");
		btnGestinDePlatos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				FrameCocina frameCocina = null;
				try {
					frameCocina = new FrameCocina();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				frameCocina.setVisible(true);
				frameCocina.setLocationRelativeTo(null);
			
			}
		});
		btnGestinDePlatos.setBounds(55, 41, 277, 43);
		panelCocina.add(btnGestinDePlatos);
		
		JButton btnAsistenciaDeComanda = new JButton("Asistencia a Comanda");
		btnAsistenciaDeComanda.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			
				FrameAsistenciaComanda frameAsistenciaComanda = null;
				try {
					frameAsistenciaComanda = new FrameAsistenciaComanda();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				frameAsistenciaComanda.setVisible(true);
				frameAsistenciaComanda.setLocationRelativeTo(null);
			}
		});
		btnAsistenciaDeComanda.setBounds(55, 95, 277, 43);
		panelCocina.add(btnAsistenciaDeComanda);
		
		JPanel panelAtencion = new JPanel();
		///////Foto del Panel///////	
		panelAtencion.setBorder(fondo);
		
		tabbedPane.addTab("Atenci\u00F3n al Cliente", null, panelAtencion, null);
		panelAtencion.setLayout(null);
		
		JButton btnGestinComanda = new JButton("Gesti\u00F3n de Comanda");
		btnGestinComanda.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				FrameGestionComandas frameGestionComanda = null;
				try {
					frameGestionComanda = new FrameGestionComandas();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				frameGestionComanda.setVisible(true);
				frameGestionComanda.setLocationRelativeTo(null);
			
			}
		});
		btnGestinComanda.setBounds(52, 77, 277, 43);
		panelAtencion.add(btnGestinComanda);
		
		JButton btnGestinDeMapa_1 = new JButton("Gesti\u00F3n de Mapa de Mesas");
		btnGestinDeMapa_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				FrameMapaMesas frameMapaMesas = null;
				try {
					frameMapaMesas = new FrameMapaMesas();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				frameMapaMesas.setVisible(true);
				frameMapaMesas.setLocationRelativeTo(null);
			
			
			}
		});
		btnGestinDeMapa_1.setBounds(52, 29, 277, 43);
		panelAtencion.add(btnGestinDeMapa_1);
		
		JButton btnCierreSesion = new JButton("Cierre de Sesi\u00F3n");
		btnCierreSesion.setBounds(306, 396, 178, 40);
		contentPane.setLayout(null);
		contentPane.add(tabbedPane);
		contentPane.add(btnCierreSesion);
		
		//Llamamos a la funcion que nos activara las ventanas correspondientes.
		establecePermisos(permisos);
		
		btnCierreSesion.addActionListener(this);
		btnCierreSesion.setActionCommand("CierreSesion");
		
	}//X_AXIS
	
	public void actionPerformed(ActionEvent e) 
	{
		if (e.getActionCommand().equals("CierreSesion"))
		{
			baseDatos.cierraSesion(usuario);
			this.dispose();
		}
	}
	
	private void establecePermisos(int permisos)
	{
		JTabbedPane panelTabulado = (JTabbedPane) contentPane.getComponent(0);
		switch(permisos)
		{
			//Gerente
			case 0:	
			        panelTabulado.setEnabledAt(1, false);   
					panelTabulado.setEnabledAt(2, false);
					panelTabulado.setEnabledAt(3, false);
					panelTabulado.setEnabledAt(4, false);
					break;
					
			//Encargado
			case 1:	panelTabulado.setEnabledAt(0, false);
					panelTabulado.setEnabledAt(3, false);
					panelTabulado.setSelectedIndex(1);
					break;
					
			//Cocinero
			case 2:	panelTabulado.setEnabledAt(0, false);
					panelTabulado.setEnabledAt(1, false);
					panelTabulado.setEnabledAt(2, false);
					panelTabulado.setEnabledAt(4, false);
					panelTabulado.setSelectedIndex(3);
					break;
					
			//Camarero
			case 3:	panelTabulado.setEnabledAt(0, false);
					panelTabulado.setEnabledAt(1, false);
					panelTabulado.setEnabledAt(2, false);
					panelTabulado.setEnabledAt(3, false);
					panelTabulado.setSelectedIndex(4);
					break;
					
			//SuperUsuario
			case 4:	panelTabulado.setEnabledAt(0, true);
					panelTabulado.setEnabledAt(1, true);
					panelTabulado.setEnabledAt(2, true);
					panelTabulado.setEnabledAt(3, true);
					panelTabulado.setEnabledAt(4, true);
					panelTabulado.setSelectedIndex(0);
					
			default: break;		
		}
	}
}

